package org.biubiu0002.baiblog.core.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.biubiu0002.baiblog.common.utils.PageUtils;
import org.biubiu0002.baiblog.core.model.entity.FriendshipEntity;
import org.biubiu0002.baiblog.core.model.vo.req.FollowReqVo;

import java.util.List;

/**
 * @Author: biubiu0002
 * @Date: 2022/8/1 10:58
 **/
public interface FriendshipService extends IService<FriendshipEntity> {
    /**
     * 当前用户关注/取关uid
     * @param followReqVo reqVo
     * @return uid粉丝数
     */
    int follow(FollowReqVo followReqVo);


    /**
     * 当前用户是否关注了uid
     * @param uid 他人用户
     * @return 结果
     */
    int isFollowing(String uid);

    /**
     * 当前用户是否被uid关注了
     * @param uid 他人用户
     * @return 结果
     */
    int isFollowed(String uid);

    /**
     * 用户的关注列表
     * @param uid 用户
     * @param page 页码
     * @param limit 页面大小
     * @return 分页结果
     */
    PageUtils follows(String uid, int page, int limit);

    /**
     * 用户全量关注列表
     * @param uid uid
     * @return 用户全量关注列表
     */
    List<String> getFollowList(String uid);

    /**
     * 用户的粉丝列表
     * @param uid 用户
     * @param page 页码
     * @param limit 页面大小
     * @return 分页结果
     */
    PageUtils fans(String uid, int page, int limit);

    /**
     * 用户全量粉丝列表
     * @param uid uid
     * @return 用户全量关注列表
     */
    List<String> getFansList(String uid);

    /**
     * 用户的关注人数量
     * @param uid uid
     * @return 用户的关注人数量
     */
    int followCount(String uid);

    /**
     * 用户的粉丝数量
     * @param uid uid
     * @return 用户的粉丝数量
     */
    int fansCount(String uid);
}
